<template>
  <el-row>
    <el-alert type="info" show-icon>
      <template #title>
        <el-text size="small">编写数据解析脚本，透传类设备上报数据时会自动调用脚本将数据解析为 JSON
          格式，您可以对脚本进行模拟和运行调试，运行正常后点击“提交”，发布该脚本，脚本文件大小上限是 128KB。
        </el-text>
      </template>
    </el-alert>
  </el-row>
  <el-row>
    <code-editor
        ref="infoEditor"
        v-model="info"
        mode="javascript"
        height="300px"
    />
  </el-row>
  <el-row>
    <el-tabs :style="{ width: '100%'}" v-model="activeName" @tab-click="tabClick">
      <el-tab-pane label="模拟输入" name="input">
        <el-row>
          <el-input type="textarea" v-model="input" :autosize="{minRows: 10}"
                    placeholder="//二进制数据已0x开头的十六进制输入，字符串数据输入原始字符串"/>
        </el-row>
      </el-tab-pane>
      <el-tab-pane label="运行结果" name="output">
        <el-row>
          <el-text size="small">输出Topic:""</el-text>
        </el-row>
        <el-row>
          <el-input type="textarea" v-model="output" :autosize="{minRows: 10}"/>
        </el-row>
      </el-tab-pane>
    </el-tabs>
  </el-row>
  <el-row>
    <el-button type="primary"
               icon="el-icon-circle-check"
               @click="submit()">提 交
    </el-button>
    <el-button icon="el-icon-caret-right"
               @click="run()">执 行
    </el-button>
    <el-button icon="el-icon-message-box"
               @click="save()">保 存
    </el-button>
  </el-row>
</template>
<script>
import {get, insertOrUpdate, debug} from "@/api/iot/product/script";
import {select} from "@/api/iot/device";

export default {
  name: 'productScript',
  props: {
    productKey: String,
    productId: String,
  },
  data() {
    return {
      info: `/** 以下为脚本模版，您可以基于以下模版进行脚本编写 */
/**
 * 将设备自定义topic数据转换为json格式数据, 设备上报数据到物联网平台时调用
 * 入参：topic   string 设备上报消息的topic
 * 入参：rawData byte[]数组 不能为空
 * 出参：jsonObj byte[]数组 不能为空
 */
function rawDataToProtocol(topic, rawData) {
    var buffer = new ReadBuffer(rawData);
    var data = {};
    data.a = buffer.readUB1();
    data.b = buffer.readUB2();
    var timestamp = buffer.readUB4();
    // 转换成 blade 协议的 json 结构体 byte array，timestamp 可不传，则取当前时间
    return jsUtil.toDeviceReq(data, timestamp);
}

/**
 *  将blade协议的数据转换为设备能识别的格式数据，物联网平台给设备下发数据时调用
 *  入参：jsonObj blade JSON对象  不能为空
 *  出参：rawData byte[]数组      不能为空
 */
function protocolToRawData(topic, jsonObj) {
    // 数据时间
    var timestamp = jsonObj.t;
    var led = jsonObj.data.led;
    // byte[] 写出工具
    var buffer = new WriteBuffer();
    // 写出 long 长整型， 同类方法有 writeByte(byte b)、writeBytes(byte[] bytes)、writeShort(short v)、writeInt(int v)
    buffer.writeLongBE(timestamp);
    buffer.writeIntBE(led);
    // 转换成 byte array 数组
    return buffer.toArray();
}`,
      input: "",
      output: "",
      activeName: "input",
    };
  },
  methods: {
    tabClick(tab, event) {
      if (tab.paneName === 'input') {

      }
      if (tab.paneName === 'output') {

      }
      console.log(tab, event);
    },
    submit() {

    },
    run() {

    },
    save() {

    },
  }
};
</script>
<style>


</style>
